import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int k = scanner.nextInt();

        long[] arr = new long[n];
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextLong();
        }

        //创建前缀和数组, 同时 %k
        long[] dp = new long[n + 1];

        //key为前缀和数组中的元素，value为该元素出现的个数
        HashMap<Long, Integer> map = new HashMap<>();
        map.put(0l, 1);

        long ret = 0;
        for (int i = 1; i < n + 1; i++) {
            dp[i] = dp[i - 1] + arr[i - 1];
            ret += map.getOrDefault(dp[i] % k, 0);
            map.put(dp[i] % k, map.getOrDefault(dp[i] % k, 0) + 1);
        }

//        for (Map.Entry<Long, Integer> entry : map.entrySet()) {
//            int num = entry.getValue();
//            if (num > 1) {
//                ret += method(num, k);
//            } else {
//                ret++;
//            }
//        }

        System.out.println(ret);

        scanner.close();
    }

//    public static long method(long num, int k) {
//        long ret = 1;
//        int count = 0;
//        while (count < k) {
//            ret *= num;
//            num--;
//            count++;
//        }
//
//        while (k > 0) {
//            ret /= k;
//            k--;
//        }
//        return ret;
//    }
}
